草庐IT

CountDownLatch和ExecutorService 线程池cachedThreadPool.submit

全部标签

java - EJB 和线程

据我所知,从EJB中生成线程是非法的,因为它可能会干扰EJB的生命周期。但是,使用JDK中的预定义Java类是否违法,这些类在EJB(特别是MDB)中内部产生和处理线程(例如Executor)? 最佳答案 你“不能”(不应该)使用线程、线程池、执行器……所有这些。使用应用服务器的重点是只编写业务逻辑并让应用服务器完成繁重的工作。如果您真的非常需要自己处理线程,请使用EJB3.1“单例”服务来管理线程。但是,正如其他人所提到的,最好将其留给应用服务器。在应用服务器中进行并行处理的一种方法是使用MDB(听起来您已经在使用它),尽管根据并

java - 如何在所有线程完成后才执行一段代码

我有一个日志记录代码,需要在所有Threads执行后执行。Threadt1=newMyThread();Threadt2=newMyThread();t1.run();t2.run();doLogging();是否有任何方法可以仅在两个线程都完成处理后才执行doLogging()。现在,一旦t1和t2启动,就会调用doLogging()。 最佳答案 只是join()doLogging()调用之前的所有线程:t1.join();t2.join();//thefollowinglinewillbeexecutedwhenboththre

java - java.util.Hashtable 线程安全吗?

我已经有一段时间没有使用哈希表来处理任何重要的事情了,但我似乎记得同步的get()和put()方法。JavaDocs没有反射(reflect)这一点。他们只是说Hashtable类是同步的。我能假设什么?如果多个线程同时访问哈希表(假设他们不是在修改同一个条目),操作就会成功,对吧?我猜我想问的是“java.util.Hashtable线程安全吗?”请指导我摆脱这个问题... 最佳答案 它是线程安全的,因为get、put、contains方法等是同步的。此外,多个线程将无法同时访问哈希表,无论它们正在修改哪些条目。编辑-修改为包括同

java - 通过java中的另一个线程刷新GUI(swing)

我有一个主程序,其中GUI基于swing,并且根据四种状态之一,GUI元素具有不同的参数。publicclassFrameextendsJFrameimplementsRunnable{Statusstatus=1;...@Overridepublicvoidrun(){switch(status){case1:...case2:...}publicvoidupdateGUI(Statusstatus){this.status=status;SwingUtilities.invokeLater(this);}如果我想刷新GUI,只调用带有适当参数的updateGUI,一切都很好。但该程

java - 如何通过另一个线程停止一个线程?

我在Java中遇到了线程问题,我有三个线程-thread1、thread2和thread3。那些在开始时正在做一些任务,我想通过thread1停止这两个线程。我将thread1用于sleep(500),然后我停止了两个线程,但是两个线程的进程仍在运行。你知道怎么做吗? 最佳答案 您打算如何阻止他们?Thread.stop?请注意,此方法已弃用。相反,考虑为线程1使用某种标志来与线程2和3通信,它们应该停止。事实上,你可以使用interrupts.下面,Thread.interrupt用于实现协调。finalThreadsubject

java - 为什么struts Action类不是线程安全的?

我可以在许多网站上了解到StrutsAction类不是线程安全的。我无法理解为什么会这样。我还读了一本书,上面写着“StrutsAction类被缓存并重用以提高性能以必须以线程安全的方式实现操作类为代价的优化”缓存Action类和线程安全有什么关系?. 最佳答案 Howiscachingactionclassesandbeingthreadsaferelated?如果您缓存并重用一个类的实例,允许多个线程同时访问同一个实例,那么该类本质上不是线程安全的*。如果要在类上放置可变实例或静态字段,并发下的结果将是意想不到的和有问题的。另一

java - 以编程方式进行线程转储/JDI(Java 调试器接口(interface))

我喜欢以编程方式生成线程转储。我了解到基本上有两种方法可以做到这一点:使用“Java虚拟机工具接口(interface)”JVM-TI使用更高抽象的“Java调试器接口(interface)”JDI对于JVM-TI,我能够找到一些有用的信息,但我必须编写一个JNI-DLL,至少目前我想避免这样做。通过JDI,我可以使用Java,而且我似乎可以在应用程序中使用它。但是我找不到它的某种教程或HOWTO。我能找到的唯一文档是Java文档http://java.sun.com/j2se/1.5.0/docs/guide/jpda/jdi/这不是很有帮助,因为它没有告诉我如何使用这些类。那么,有

java - 两个线程能否在同一时间点运行两种不同的方法?

classA{privatesynchronizedf(){......}privatevoidg(){......}}如果线程T1正在运行同步的f(),线程t2是否可以在同一时间点运行非同步的g(),同时T1仍在运行f()? 最佳答案 不在A的同一个实例上。实例本身就是锁,因此两个线程同时执行两个方法,您将需要A的两个实例。 关于java-两个线程能否在同一时间点运行两种不同的方法?,我们在StackOverflow上找到一个类似的问题: https://s

java - 多线程的最佳替代方案是什么?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭7年前。Improvethisquestion目前我们在我们的应用程序(Java)中使用线程。但是一次会创建大约1000个(或更多)线程。这些线程应该处理数据并将其存储在数据库中。这会消耗更多内存和I/O。对此最好的选择是什么?。可扩展性、一致性和性能是主要要求。

java - 线程中断状态被清除——可能是 Java 错误

这是引用Path#register方法。如果一个线程正在运行一个包含该方法的block,而另一个线程预先中断它。然后发现该方法清除了中断状态。文档中没有提到清除线程的中断状态。复制importjava.io.*;importjava.nio.file.*;importstaticjava.nio.file.LinkOption.*;importstaticjava.nio.file.StandardWatchEventKinds.*;importjava.nio.file.attribute.*;publicclassWatchDir{privatefinalWatchServicew